/**
 * 描述：
 *
 * @author madong47
 * @date 2020/10/30
 */
package com.ddd.application;

//概述
//对标常规设计中的部分Service层功能。包含跨聚合的数据库多表操作的Service功能或事务。
//
//职责
//应用层主要实现对领域服务的包装、编排和组合，即：
//
//1）跨越领域服务的 Service 方法调用在本层完成编排组合，具体单个业务由领域服务实现，应用服务通过调取多个领域服务实现一整个大业务的执行。
//
//2）包装领域内领域服务接口给用户接口层使用。
//
//应用层应该很薄，不应该出现业务逻辑，业务逻辑应该出现在领域服务。应用服务只是通过组合编排各领域服务来实现行为功能。
//
//或调用本层的仓储接口实现跨越聚合的查询功能。
//
//例如在本系统中，如果有一个功能要统计内容库下的数据源个数，并形成列表，实际上查询就是跨越了内容库和数据源两个领域服务，需要在应用层调用应用服务及仓储接口完成。
//
//组成
//event
//事件发布与订阅。
//
//publish 组装事件数据并发布事件。
//
//subscribe 接受事件并拆解事件数据，调用应用服务或领域服务执行业务逻辑。
//
//service
//应用服务，跨越领域服务的Service类。数据库事务统一在本层控制。
//
//repository
//跨越聚合的仓储查询接口，一般操作行为和聚合内的查询都应该在领域服务及对象里面实现，但有些跨越聚合的查询可直接使用应用服务层访问仓储。
